import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import static java.lang.System.exit;
//成员管理
public class ClubeMembersManage {
    public static List<Member> members=new ArrayList<>();
    static Scanner sc=new Scanner(System.in);
    //添加成员
    public static void addMember(){
        boolean isExist=false;
        System.out.println("请依次输入成员编号，姓名，年龄，年级");
        do{
            int memberId=sc.nextInt();
            String memberName=sc.next();
            int age=sc.nextInt();
            String grade=sc.next();
            for(Member i:members){//检查学号重复
                if(i.getId()==memberId){
                    isExist=true;
                    break;
                }
            }
            if(!isExist){
                Member member=new Member(memberId,memberName,age,grade);
                members.add(member);
                System.out.println("新成员；"+member);
            }else{
                System.out.println("学员编号已存在，请选择并重新输入其他编号：");
            }
        }while(isExist);
    }
    public static void updataMember(){
        if(members.isEmpty()){
            System.out.println("目前社团没有任何成员！");
            return;
        }
        System.out.println("请输入成员编号：");
        int memberId=sc.nextInt();
        System.out.println("请输入新的年龄和年级：");
        int age=sc.nextInt();
        String grade=sc.next();
        for(Member i:members){//遍历寻找要修改的member
            if(i.getId()==memberId){
                i.setAge(age);
                i.setGrade(grade);
                System.out.println("成功修改成员："+i);
                return;
            }
        }
        System.out.println("成员编号输入错误！："+memberId);
    }
    public static void searchMemberByGrade(){
        if(members.isEmpty()){
            System.out.println("目前社团没有任何成员！");
            return;
        }
        List<Member> foundMembers= new ArrayList<>();
        System.out.println("请输入年级：");
        String grade=sc.next();
        for(Member i:members){
            if(i.getGrade().equals(grade)){
                foundMembers.add(i);
            }
        }if(!foundMembers.isEmpty()){
            System.out.println(grade+"的成员信息如下--------");
            selectAll(foundMembers);
        }else{
            System.out.println("社团中没有"+grade+"的成员！");
        }
    }
    public static void selectAll(List<Member>members){
        System.out.println("成员编号    姓名    年龄    年级    ");
        for(Member i:members){
            System.out.print("  "+i.getId()+"    ");
            System.out.print("  "+i.getName()+"    ");
            System.out.print("  "+i.getAge()+"岁    ");
            System.out.print("  "+i.getGrade()+"    ");
            System.out.println();
        }
    }
    public static void delectMember(){
        if(members.isEmpty()){
            System.out.println("目前社团没有任何成员！");
            return;
        }
        System.out.println("请输入成员编号：");
        int memberId=sc.nextInt();
        for(Member i:members){
            if(i.getId()==memberId){
                members.remove(i);
                System.out.println("成功删除成员："+i);
                return;
            }
        }
        System.out.println("找不到指定编号的成员："+memberId);
    }
    public static void displayAll(){
        if(members.isEmpty()){
            System.out.println("目前社团没有任何成员！");
        }else{
            System.out.println("-------- 社团全体成员 --------");
           selectAll(members);
        }
    }
    public static void displayMenu(){
        System.out.println("-------- 社团成员管理系统 --------");
        System.out.println("1.查看目前社团所以成员");
        System.out.println("2.添加社团成员");
        System.out.println("3.修改成员信息");
        System.out.println("4.查看指定年级的成员");
        System.out.println("5.移除成员");
        System.out.println("6.退出系统");
    }

    public static void main(String[] args) {
        while(true){
            displayMenu();
            int option=sc.nextInt();
            switch(option){
                case 1:displayAll();break;
                case 2:addMember();break;
                case 3:updataMember();break;
                case 4:searchMemberByGrade();break;
                case 5:delectMember();break;
                case 6:
                    System.out.println("退出系统...");
                    exit(0);
            }

        }
    }
}
